package com.example.leetcode.prcatice;

import java.util.PriorityQueue;

/**
 * 设计一个算法，找出数组中最小的k个数。以任意顺序返回这k个数均可。
 *
 * <p>示例：
 *
 * <p>输入： arr = [1,3,5,7,2,4,6,8], k = 4 输出： [1,2,3,4]
 *
 * <p>来源：力扣（LeetCode） 链接：https://leetcode-cn.com/problems/smallest-k-lcci
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Offer17_14 {

    public int[] smallestK(int[] arr, int k) {
        PriorityQueue<Integer> queue = new PriorityQueue<Integer>(Integer::compare);
        for (int value : arr) {
            queue.add(value);
        }
        int[] result = new int[k];
        for (int i =0;i<k;i++){
            result[i] = queue.poll();
        }
        return result;
    }
}



class TestOffer17_14{
  public static void main(String[] args) {
    int[] arr = {1,3,5,7,2,4,6,8};
    int k =4;
    Offer17_14 o = new Offer17_14();
    int[] ints = o.smallestK(arr, k);
    for (int i :ints ) {
      System.out.print(i);
    }
  }
}
